package com.sprouting.ops.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;
import java.util.Optional;

/**
 * 返回给前端的json数据枚举
 *
 * @author ：LX（长沙麓谷）
 * @date 创建时间： 2023/3/16 23:24
 */
@Getter
@AllArgsConstructor
public enum ResultEnum {

    /**
     * 返回给前端的状态码
     */
    SUCCESS(200, "请求成功"),
    ERROR(500, "服务器内部错误"),

    NOT_LOGIN(401, "未登录或登录已过期"),
    FAIL(402, "业务错误，拒绝执行"),
    FORBIDDEN(403, "非法访问"),
    REQUEST_TIMEOUT(408, "请求超时"),
    CHECK_FAIL(406, "非法请求参数"),
    NO_AUTHORIZATION(412, "无访问权限或未授权"),
    NOT_IMPLEMENTED(501, "功能未实现/未开启"),
    FREQUENTLY(503, "请求过于频繁或重复提交"),
    DEMO_DENY(901, "演示模式，禁止写操作"),
    ;

    /**
     * 返回代码，默认情况下使用
     */
    private final Integer code;
    /**
     * 消息
     */
    private final String msg;

    /**
     * 根据code查询出对应的枚举
     * @param code 要查询的代码
     * @return
     */
    public static ResultEnum getByCode(Integer code){
        Optional<ResultEnum> optional = Arrays.stream(ResultEnum.values())
                .filter(p -> p.getCode().equals(code))
                .findFirst();
        return optional.orElse(null);
    }
}
